package cn.telling.sellercentre.dao;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import cn.telling.common.pager.PageVo;
import cn.telling.product.vo.ShopProductVo;
import cn.telling.product.vo.SupplyVo;
import cn.telling.product.vo.TelMarketPubHis;
import cn.telling.sellerCenter.vo.ProductSortVo;
import cn.telling.sellerCenter.vo.QuotationVo;
import cn.telling.sellerCenter.vo.SellerBasePrice;
import cn.telling.sellerCenter.vo.ShopProductApproveVo;
import cn.telling.sellerCenter.vo.ShopProductAreaApproveVo;
import cn.telling.sellerCenter.vo.ShopProductAreaVo;

/**
 * @Description: 产品管理 产品中心数据处理层接口
 * @author yanhaiwei
 */
/**
 * @author luoqingm
 *
 */
/**
 * @author luoqingm
 *
 */
public interface ISellerConCentreDao {
    /** 根据用户Id获得商铺简介的信息 */
    /*
     * public SupplyVo GetShopInfo(String userId);
     */
    /*	*//** 根据用户Id修改商铺简介信息 */
    /*
     * public int SetShopIntroduce(String userId,String shopIntroduce);
     */
	
    /** 获得卖家中心已上架、已下架、审核中产品列表 */
	public List<ShopProductAreaVo> getSaleListByStatus(String userId, String saleType, String status, String conditions,String productfirstSortId,String productSortId);

    /** 获取基准价格 */
    public SellerBasePrice getSellerBasePrice(String supplyId, String productId);

    /** 根据供货商产品信息提交产品审核申请 */
    public int insertShopProductApprove(ShopProductAreaApproveVo shopProductAreaApproveVo);

    /** 根据货商产品信息提交产品审核申请 更新供应商产品区域销售状态 */
    public int updateSupplyAreaSaleStatus(ShopProductAreaApproveVo shopProductAreaApproveVo);

    /** 修改通信市场产品发布历史 截止日期 */
    public int updateTelMarketPubHis(String productId, String supplyAreaId);

    /** 入库基准价格 */
    public int insertSellerBsePrice(SellerBasePrice sellerBasePrice);

    /** 更新基准价格 */
    public int updateSellerBasePrice(BigDecimal basePrice, BigDecimal userId, String supplyId, String productId);

    /** 记录单个通信市场产品发布历史 */
    public int insertTelMarketPubHis(TelMarketPubHis telMarketPubHis);

    /** 根据共享编码查询出共享产品列表 供共享使用 */
    public List<ShopProductAreaVo> getSupplyAreaByShareCode(String shareCode);

    /** 根据supplyAreaId 查询出供货商产品区域 */
    public ShopProductAreaVo getSupplyAreaById(String supplyAreaId);

    // 根据供应商产品信息更新供应商产品继续竞价状态
    public int UpdateContinuous(ShopProductAreaVo shopProductAreaVo);

    /** 批量更新基准价格 */
    public int updateSellerBasePriceBatch(List<SellerBasePrice> sellerBasePriceList);

    /** 批量记录通信市场产品发布历史 */
    public int[] insertTelMarketPubHis(List<TelMarketPubHis> telMarketPubHisList);

    /** 批量更新通信市场产品发布历史 截止日期 */
    public int updateTelMarketPubHisBatch(List<String> productIdList, List<String> supplyAreaIdList);

    /** 根据用户Id获得供应商类型 空 外部供应商 01 天音供应商 02 03厂家供应商 */
    public String GetSupplyType(String userid);

    // 根据用户Id、销售类型(定向、非定向)、上下架状态、型号名称 获得供货商产品总数
    public int GetShopProductCount(String userId, String saleType, String status, String modelName);

    // 根据用户Id、销售类型(定向、非定向)、上下架状态、型号名称 分页获得供货商产品列表（分页）
    public List<ShopProductVo> GetShopProductList(String userId, String saleType, String status, PageVo pageVo,
            String modelName);

    // 根据用户Id、销售类型(定向、非定向)、型号名称 获得审核中的供货商产品总数
    public int GetApproveShopProductCount(String userId, String saleType, String modelName);

    // 根据用户Id、销售类型(定向、非定向)、型号名称 分页获得审核中的供货商产品列表（分页）
    public List<ShopProductVo> GetApproveShopProductList(String userId, String saleType, PageVo pageVo, String modelName);

    // 根据供货商产品Id、销售状态(1 审核中、2 审核未通过、3 审核通过)、上下架状态 获得该供货商产品的指定状态的发布信息
    public List<ShopProductAreaVo> GetShopProductAreaList(long shopProductId, String saleStatus, String status);

    // 根据供货商产品Id、用户Id 获得供货商产品信息
    public ShopProductVo GetShopProduct(long shopProductId, String userId);

    // 根据 供货商产品id 返回ShopProductVO
    public ShopProductVo getOneShopProductVO(String id);

    // 根据供货商产品信息提交产品审核申请
    public int ApproveShopProductChange2(ShopProductApproveVo shopProductApproveVo);

    // 根据供货商产品信息更新供应商产品状态
    public int UpdateShopProductStatus(ShopProductApproveVo shopProductApproveVo);

    // 根据供货商产品信息更新供应商产品状态
    public int UpdateShopBidProductStatus(ShopProductApproveVo shopProductApproveVo);
        
	//查询产品类型 	
	public Map<String,Object>  QueryProductlist();
	//查询第二级别的产品类型
	public List<ProductSortVo>  QueryProductSecondList(String parentsortId);
	
	/**
	 * @param shopProductAreaApproveVo
	 * @return 修改supplyarea0的表
	 */
	public int updateSupplyArea0(ShopProductAreaApproveVo shopProductAreaApproveVo);
		
	
	public String queryFor(long maijiaAreaId);
	
  //
	/**
	 * @param shopProductAreaVo
	 * @return  
	 * @param   讲产品下架  如果供应商的被冻结
	 * @author luoqingm
	 */
	public int    updateStatusByFronesupply(List<ShopProductAreaVo> shopProductAreaVo );
	/**
	 * @Description 报价单
	 * @Author daishun
	 * @Date 2015-9-16下午8:19:07
	 */
	public List<QuotationVo> searchForQuotation(String supplyId,String conditions,String productfirstSortId,String productSortid);
	/**
	 * 判断供应商是否发布过此产品
	 * @author daishun
	 */
	public boolean checkRelease(String supplyAreaId,String userid);
	/**
	 * 修改发布表数据
	 * @param shopProductAreaVo
	 * @return
	 * @author daishun
	 */
	public boolean updateSupplyArea(ShopProductAreaVo shopProductAreaVo);
	/**
	 * 逻辑删除发布记录
	 * @author daishun
	 */
	public boolean deleteSupplyArea(ShopProductAreaVo shopProductAreaVo);
	/**
	 * 天联华建供应商取消发布返还定向发布库存
	 * @author daishun
	 */
	public boolean returnStock(ShopProductAreaVo vo);
}
